//java中数组创建的三中方式
//public class Main {
//    public static void main(String[] args) {
//        int[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
//        int[] array1 = new int[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
//        int[] array2 = new int[10];
//    }
//}



//java中字符串数组创建的两种方式
//public class Main {
//    public static void main(String[] args) {
//        String str = "Hello World";
//        String str2 = new String("Hello World");
//    }
//}


//创建的数组，并且赋初始值（创建一个int类型的数组，元素个数为100，并把每个元素依次设置为1~100
// java.util.Arrays;
//public clasimports Main {
//    public static void main(String[] args) {
//        int[] array = new int[100];
//        for (int i = 0; i < array.length; i++) {
//            array[i] = i + 1;
//        }
//        System.out.println(Arrays.toString(array));
//    }
//}


//打印数组（实现一个方法printArray,以数组为参数，循环访问数组中的每个元素，打印每个元素的值）
//public class Main {
//    public static void printArray(int[] array) {
//        for (int i = 0; i < array.length; i++) {
//            System.out.print(array[i] + " ");
//        }
//    }
//    public static void main(String[] args) {
//        int[] array = new int[100];
//        for(int i = 0; i < array.length; i++) {
//            array[i] = i + 1;
//        }
//        printArray(array);
//    }
//}


//写一个方法将数组转化成字符串
//public class Main {
//    public static String myToString(int[] array) {
//        if (array == null) {
//            return "null";
//        }
//        String ret = "[";
//        for (int i = 0; i < array.length; i++) {
//            ret += array[i];
//            if (i != array.length - 1) {
//                ret += ",";
//            }
//        }
//        ret += "]";
//        return ret;
//    }
//    public static void main(String[] args) {
//        int[] array = {1,2,3,4,5,6,7,8,9};
//        System.out.println(myToString(array));
//        System.out.println(myToString(null));
//    }
//}


//数组的拷贝
//import java.util.Arrays;
//public class Main {
//    public static void main(String[] args) {
//        int[] array = {1,2,3,4};
//        int[] array2 = new int[array.length];
//        for (int i = 0; i < array.length; i++) {
//            array2[i] = array[i];
//        }
//        System.out.println(Arrays.toString(array));
//        System.out.println(Arrays.toString(array2));
//        System.out.println("=====================");
//        array2[0] = 199;
//        System.out.println(Arrays.toString(array));
//        System.out.println(Arrays.toString(array2));
//    }
//}


//数组的拷贝
//import java.util.Arrays;
//public class Main {
//    public static void main(String[] args) {
//        int[] array = {1,2,3,4};
//        int[] ret = Arrays.copyOf(array, array.length);
//        System.out.println(Arrays.toString(array));
//        System.out.println(Arrays.toString(ret));
//        System.out.println("===================");
//        ret[0] = 199;
//        System.out.println(Arrays.toString(array));
//        System.out.println(Arrays.toString(ret));
//    }
//}


//数组扩容
//import java.util.Arrays;
//public class Main {
//    public static void main(String[] args) {
//        int[] array = {1,2,3,4};
//        int[] ret = Arrays.copyOf(array, array.length*2);
//        System.out.println(Arrays.toString(array));
//        System.out.println(Arrays.toString(ret));
//        System.out.println("===================");
//        ret[0] = 199;
//        System.out.println(Arrays.toString(array));
//        System.out.println(Arrays.toString(ret));
//    }
//}


//数组拷贝
//import java.util.Arrays;
//public class Main {
//    public static void main(String[] args) {
//        int[] array = {1, 2, 3, 4};
//        int[] copy = new int[array.length];
//        System.arraycopy(array, 0, copy, 0, array.length);
//        System.out.println(Arrays.toString(array));
//        System.out.println(Arrays.toString(copy));
//        System.out.println("===================");
//        System.out.println(Arrays.toString(array));
//        System.out.println(Arrays.toString(copy));
//    }
//}


//数组部分拷贝
//import java.util.Arrays;
//public class Main {
//    public static void main(String[] args) {
//        int[] array = {1,2,3,4};
//        int[] array2 = new int[array.length];
//        System.arraycopy(array,1,array2,1,array.length-1);
//        System.out.println(Arrays.toString(array));
//        System.out.println(Arrays.toString(array2));
//        System.out.println("=======================");
//        array2[1] = 199;
//        System.out.println(Arrays.toString(array));
//        System.out.println(Arrays.toString(array2));
//    }
//}


//数组的缩短
//import java.util.Arrays;
//public class Main {
//    public static void main(String[] args) {
//        int[] array = {1,2,3,4};
//        int[] ret = Arrays.copyOf(array, array.length/2);
//        System.out.println(Arrays.toString(array));
//        System.out.println(Arrays.toString(ret));
//        System.out.println("===================");
//        ret[0] = 199;
//        System.out.println(Arrays.toString(array));
//        System.out.println(Arrays.toString(ret));
//    }
//}


//数组某区域的拷贝
//import java.util.Arrays;
//public class Main {
//    public static void main(String[] args) {
//        int[] array = {1,2,3,4};
//        int[] array2 = Arrays.copyOfRange(array,0,2);//[0,2)
//        System.out.println(Arrays.toString(array));
//        System.out.println(Arrays.toString(array2));
//    }
//}



//比较两个数组是否相同
//import java.util.Arrays;
//public class Main {
//    public static void main(String[] args) {
//        int[] array1 = {1,2,3,4,5};
//        int[] array2 = {1,2,3,4,5};
//        System.out.println(Arrays.equals(array1, array2));
//    }
//}


//数组赋值
//import java.util.Arrays;
//public class Main {
//    public static void main(String[] args) {
//        int[] array = new int[10];
//        Arrays.fill(array, 5);
//        System.out.println(Arrays.toString(array));
//    }
//}


//数组部分赋值
//import java.util.Arrays;
//public class Main {
//    public static void main(String[] args) {
//        int[] array = new int[10];
//            Arrays.fill(array,1,3,5);//[1,3)
//        System.out.println(Arrays.toString(array));
//    }
//}


//数组克隆
//import java.util.Arrays;
//public class Main {
//    public static void main(String[] args) {
//        int[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
//        int[] array2 = array.clone();
//        System.out.println(Arrays.toString(array));
//        System.out.println(Arrays.toString(array2));
//        System.out.println("============================");
//        array2[0] = 199;
//        System.out.println(Arrays.toString(array));
//        System.out.println(Arrays.toString(array2));
//    }
//}


//给定一个整型数组，求平均值
//import java.util.Arrays;
//public class Main {
//    public static void main(String[] args) {
//        int[] array = {1,2,3,4,5,6,7,8,9};
//        System.out.println(avg(array));
//    }
//    public static double avg(int[] array) {
//        int sum = 0;
//        for(int x : array) {
//            sum += x;
//        }
//        return (double) sum / array.length;
//    }
//}


//从数组中找出目标元素的下标
//public class Main {
//    public static void main(String[] args) {
//        int[] array = {1,2,3,4,5};
//        int ret = find(array,3);
//        System.out.println(ret);
//    }
//    public static int find(int[] array, int target) {
//        for (int i = 0; i < array.length; i++) {
//            if (array[i] == target) {
//                return i;
//            }
//        }
//        return -1;
//    }
//}


//将所有奇数移到数组左侧，所有偶数移到数组右侧
//import java.util.Arrays;
//public class Main {
//    public static void main(String[] args) {
//        int[] array = {1,2,3,4,5,6};
//       func(array);
//        System.out.println(Arrays.toString(array));
//    }
//    public static void func(int[] array) {
//        int left = 0;
//        int right = array.length - 1;
//        while(left < right) {
//            while(array[left] % 2 != 0&&left < right) {
//                left++;
//            }
//            while(array[right] % 2 == 0&&left < right) {
//                right--;
//            }
//            int temp = array[left];
//            array[left] = array[right];
//            array[right] = temp;
//        }
//    }
//}


//用二分查找的方法，在有序数组中查找指定的元素（采取二分法时数组中的元素必须是有序的）
//import java.util.Arrays;
//public class Main {
//    public static void main(String[] args) {
//        int[] array = {2,4,6,8,10};
//        System.out.println(binarySearch(array,8));
//    }
//    public static int binarySearch(int[] array, int target) {
//        int left = 0;
//        int right = array.length - 1;
//        while(left < right) {
//            int mid = (left + right) / 2;
//            if(array[mid] > target) {
//                right = mid - 1;
//            }else if(array[mid] < target) {
//                left = mid + 1;
//            }else {
//                return mid;
//            }
//        }
//        return -1;
//    }
//}


//采用方法Arrays.binarySearch在有序数组中查找指定的元素
//import java.util.Arrays;
//public class Main {
//    public static void main(String[] args) {
//        int[] array = {10,8,4,6,2};
//        Arrays.sort(array);
//        System.out.println(Arrays.binarySearch(array,8));
//    }
//}


//冒泡排序
//import java.util.Arrays;
//public class Main {
//    public static void main(String[] args) {
//        int[] array = {9,8,7,6,5,4,3,2,1};
//        bubbleSort(array);
//        System.out.println(Arrays.toString(array));
//    }
//    public static void bubbleSort(int[] array) {
//        boolean flg = false;
//        for (int i = 0; i < array.length - 1; i++) {
//            for (int j = 0; j < array.length - i - 1; j++) {
//                if (array[j] > array[j + 1]) {
//                    int temp = array[j];
//                    array[j] = array[j + 1];
//                    array[j + 1] = temp;
//                    flg = true;
//                }
//            }
//            if (flg == false) {
//                return;
//            }
//        }
//    }
//}


//给定一个整数数组array和一个整数目标值target,请你在该数组中找出和目标值target的那两个整数，并返回这两个整数的下标
//import java.util.Arrays;
//public class Main {
//    public static void main(String[] args) {
//        int[] array = {2, 4, 7, 9};
//        System.out.println(Arrays.toString(findTarget(array, 6)));
//    }
//    public static int[] findTarget(int[] array, int target) {
//        int[] ret = {-1, -1};
//        for (int i = 0; i < array.length; i++) {
//            for (int j = i + 1; j < array.length; j++) {
//                if (array[i] + array[j] == target) {
//                    ret[0] = i;
//                    ret[1] = j;
//                    return ret;
//                }
//            }
//        }
//        return ret;
//    }
//}


//找出数组中唯一出现奇数次的数字
//public class Main {
//    public static void main(String[] args) {
//        int[] array = {10,10,5,5,3};
//        System.out.println(findNum(array));
//    }
//    public static int findNum(int[] nums) {
//       int ret = 0;
//       for (int i = 0; i < nums.length; i++) {
//           ret ^= nums[i];
//       }
//       return ret;
//    }
//}
//


//找出数组中唯一出现奇数次的数字
//public class Main {
//    public static void main(String[] args) {
//        int[] array = {10,10,5,5,3};
//        System.out.println(findNum(array));
//    }
//    public static int findNum(int[] nums) {
//       int ret = nums[0];
//       for (int i = 0; i < nums.length; i++) {
//           ret ^= nums[i];
//       }
//       return ret;
//    }
//}


//给定一个大小为n的数组，找到其中的多数元素。多数元素是指在数组中出现次数大于[n/2]的元素。
//import java.util.Arrays;
//public class Main {
//    public static void main(String[] args) {
//        int[] array = {2,2,3,2,2};
//        int ret = findMoreNum(array);
//        System.out.println(ret);
//    }
//    public static int findMoreNum(int[] array) {
//        Arrays.sort(array);
//        return array[array.length / 2];
//    }
//}


//给定一个大小为n的数组，找到其中的多数元素。多数元素是指在数组中出现次数大于[n/2]的元素。
//public class Main {
//    public static int findMoreNum(int[] array) {
//        int count = 0;
//        int tmp = array[0];
//        for (int i = 1; i < array.length; i++) {
//            if (array[i] == tmp) {
//                count++;
//            }else if(array[i] != tmp) {
//                count--;
//            }else if(count == 0) {
//                tmp = array[i];
//                count = 1;//count++
//            }
//        }
//        return tmp;
//    }
//    public static void main(String[] args) {
//        int[] array = {2,2,3,2,2};
//        int ret = findMoreNum(array);
//        System.out.println(ret);
//    }
//}


//给你一个整数数组arr，请你判断数组中是否在连续三个都是奇数的情况：如果存在，请返回；否则，返回false。
//public class Main {
//    public static boolean func (int[] arr) {
//        int count = 0;
//        for (int i = 0; i < arr.length; i++) {
//            if (arr[i] % 2 != 0) {
//                count++;
//                if(count == 3) {
//                    return true;
//                }
//            }else {
//                count = 0;
//            }
//
//        }
//        return false;
//    }
//    public static void main(String[] args) {
//        int[] array = {1,1,1,3,3};
//        System.out.println(func(array));
//    }
//}


//将数组逆序排列
//import java.util.Arrays;
//public class Main {
//    public static void swap(int left, int right,int[] array) {
//        int temp = array[left];
//        array[left] = array[right];
//        array[right] = temp;
//    }
//    public static void reverse(int[] array) {
//        int left = 0;
//        int right = array.length - 1;
//        while (left < right) {
//            swap(left,right,array);
//            left++;
//            right--;
//        }
//    }
//    public static void main(String[] args) {
//        int[] array = {1,2,3,4,5,6,7,8,9};
//        reverse(array);
//        System.out.println(Arrays.toString(array));
//    }
//}


//二维数组定义的三种方式
//int[][] array1 = {{1,2,3},{4,5,6}};
//int[][] array2 = new int[][] {{1,2,3},{4,5,6}};
//int[][] array3 = new int[]2[3];


//二维数组中元素遍历
//public class Main {
//    public static void main(String[] args) {
//        int[][] array = {{1, 2, 3}, {4, 5, 6}};
//        for(int i = 0;i < 2;i++) {
//            for(int j = 0;j < 3;j++) {
//                System.out.print(array[i][j] + " ");
//            }
//        }
//    }
//}


//二维数组中元素遍历
//public class Main {
//    public static void main(String[] args) {
//        int[][] array ={{1,2,3},{4,5,6}};
//        for (int i = 0; i < array.length; i++) {
//            for (int j = 0; j < array[i].length; j++) {
//                System.out.print(array[i][j] + " ");
//            }
//        }
//    }
//}


//二维数组元素的遍历
//public class Main {
//    public static void main(String[] args) {
//        int[][] array = {{1,2,3},{4,5,6}};
//        for(int[] ret:array) {
//            for(int x:ret) {
//                System.out.print(x + " ");
//            }
//            System.out.println();
//        }
//
//    }
//}


//二维数组的打印
//import java.util.Arrays;
//public class Main {
//    public static void main(String[] args) {
//        int[][] array = {{1,2,3},{4,5,6},{7,8,9}};
//        System.out.println(Arrays.deepToString(array));
//    }
//}


//import java.util.Arrays;
//public class Main {
//    public static void main(String[] args) {
//        int[][] array = new int[2][];//java中二维数组的行不可以省略，列可以省略
//        System.out.println(array[0]);
//        System.out.println(array[1]);
//    }
//}


//public class Main {
//    public static void main(String[] args) {
//        int[][] array = new int[2][];
//        array[0] = new int[]{1, 2, 3};
//        array[1] = new int[]{4, 5, 6, 7, 8};
//        for (int i = 0; i < array.length; i++) {
//            for (int j = 0; j < array[i].length; j++) {
//                System.out.print(array[i][j] + " ");
//            }
//            System.out.println();
//        }
//    }
//}























